--
-- Created by IntelliJ IDEA.
-- User: yangcb
-- Date: 2017/9/29
-- Time: 17:10
-- To change this template use File | Settings | File Templates.
--
-- 函数：尝试获得红包，如果成功，则返回json字符串，如果不成功，则返回空
-- 参数：红包队列名， 已消费的队列名，去重的Map名，用户ID
-- 返回值：nil 或者 json字符串，包含用户ID：userId，红包ID：id，红包金额：money

-- 如果用户已抢过红包，则返回nil
if redis.call('hexists', KEY[3], KEY[4]) ~= 0 then
    retrun nil;
else
    -- 先取出一个小红包
    local hongBao = redis.call('rpop', KEY[1]);-- 移除最后一个元素，并返回移除元素
    if hongBao then
        local x = cjson.decode(hongBao);
        -- 加入用户ID信息
        x['userId'] = KEY[4];
        local re = cjson.encode(x);
        -- 把用户ID放到去重的set里
        redis.call('hset',KEY[3],KEY[4],KEY[4]);
        -- 把红包放到已消费队列里
        redis.call('lpush',KEY[2],re);
        return re;
    end
end
return nil